;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copyright 2021 fanguangping
; 
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
; 
;     http://www.apache.org/licenses/LICENSE-2.0
; 
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

#lang racket

(require rackunit)
(require rackunit/text-ui)

(require "../../racket-funny/common/constants.scm")
(require "../../racket-funny/common/messages.scm")
(require "../../racket-funny/ds/Object.scm")

(define Object-test
  (test-suite
   "Tests for Object-test.scm"
   (test-case
    "equals"
    (let ((object1 (CREATE-Object))
          (object2 (CREATE-Object)))
      (check-equal? (object-equals? object1 object2) #t "Wrong equals.")))
   (test-case
    "hash-code"
    (let ((object (CREATE-Object)))
      (check-equal? (object-hash-code object) -1 "Wrong hash code.")))
   (test-case
    "to-string"
    (let ((object (CREATE-Object)))
      (check-equal? (object-to-string object) +nil+ "Wrong to string.")))
   (test-case
    "type"
    (let ((object (CREATE-Object)))
      (check-equal? (object-type object) 'Object "Wrong type.")))))

(run-tests Object-test)

